Материалы
10 лет назад
Декомпиляция и компиляция моделей
Зачем и как декомпилировать модели? Как компилировать модели? Как делать коллизию для модели? Всё это Вы узнаете из этой статьи
Начнём, пожалуй, с декомпиляции моделей. Для этого есть программа MDL Decompiler, она есть в составе Source SDK. Программа очень проста в применении, вот как она выглядит:
Выбираем модель, указываем путь, куда положить декомпилированные файлы и нажимаем кнопку Extract. Для чего нужна декомпиляция? Также, как с картами - рассмотреть устройство модели, переделать, перенести в 3D Max. Иногда бывает нужно изменить размер модели - например, Вы делаете 3D-скайбокс - Вам нужны уменьшенные в 16 (или в 25, в 24) раз модели. В стандартных моделях можно найти и обычные модели, и модели для 3d-скайбокса, но как быть, если уменьшенных моделей нет? Решить эту проблему просто - декомпилируем модель, изменяем размер и компилируем снова. Только новую модель нужно будет вшить в конечный файл карты.
Декомпилировать, как Вы видите, просто. А для компиляции нужно кое-что знать. В папке, где лежит SMD-файл, нужно создать 2 дополнительных файла - bat-файл (для запуска компиляции) и qc-файл (для настройки). Оба файлы - текстовые. Открываем bat-файл и пишем:
"C:\Ultimate SSDK v3\SourceSDK\bin\orangebox\bin\studiomdl.exe" -fullcollide C:\bridge\bridge.qc
@pause C:\Ultimate SSDK v3\SourceSDK\bin\orangebox\bin\studiomdl.exe - это путь к компилятору моделей,
C:\bridge\bridge.qc - путь к Вашему qc-файлу. Теперь открываем qc-файл и заполняем его так:
$cd "C:\bridge" (Здесь путь к qc-файлу)
$modelname "zet\bridge\bridge.mdl" (Где будет находиться Ваша модель в папке cstrike/models)
$scale 1.0 (Масштаб модели. Вот тут можно изменять размер модели, сделать её меньше для 3d-скайбокса. Если размер модели в Хаммере получился слишком большой/маленький - просто поправьте тут число и откомпилируйте заново)
$body "body" "bridge.smd" (Здесь вводим имя SMD-файла)
$cdmaterials "models/zet/" (Путь к текстуре для модели. В эту папку нужно положить текстуры, которые Вы накладывали на модель в 3D Max'е)
$surfaceprop "metal" (Тип материала, из которого сделана модель)
$sequence idle "idle" fps 30 aCT_iDLE 1 (Тут ничего не трогаем)
$keyvalues { prop_data { "base" "Plastic.Medium" } } (Здесь указываются свойства физической модели, например, из чего она сделана, будет ли взрываться и т.д. Если Вам нужна статическая модель, вместо этой строчки введите просто $staticprop)
$collisionmodel "bridge.smd" (Тут указывается модель коллизии, для простых моделей типа ящика можно указывать тот же SMD-файл, а для моделей посложнее надо создавать дополнительную модель коллизии, об этом ниже)
{
$mass 200.0
$inertia 1.00
$damping 0.00
$rotdamping 0.00
} (Это физические параметры - инерция, масса и т.д.)
Если модель состоит из нескольких объектов, при указании в параметре $collisionmodel обычного SMD в игре может проявиться неправильная коллизия - например, сквозь решётку или дыры в заборе не будут пролетать пули, модель может оказаться приподнятой над землей и т.д. Тогда для такой модели делается модель коллизии. Открываем модель в 3D Max'е, выделяем всю нашу модель, идём на панель модификаторов, выбираем Edit Poly и выделяем все полигоны, которые будут физическими ограничителями, т.е. иметь модель столкновений - коллизию. Это должны быть все внешние полигоны. Вот у меня такая "модель", окошко в браше:
Выделяем все внешние полигоны, затем назначаем им группу сглаживания 1 (Smooth Group):
Всё, теперь сохраняем эту физическую модель с другим именем и указываем его в параметре
$collisionmodel.
И да, чуть не забыл. Если Вы помните статью про созданию текстур - текстуры для моделей делаются точно также с одним изменением в VMT-файле:
Вместо
LightmappedGeneric напишите
VertexLitGeneric. Тогда текстура на модели будет отображаться нормально, но при этом она не наложится на браш.
Готово, можно начать компиляцию - просто запустите Ваш bat-файл. Если всё сделали правильно, то Ваша новая модель появится среди остальных в Хаммере. Не забудьте вшить файлы модели и текстуры для неё в конечный файл карты. До новых встреч!
Комментарии пользователей сайта:
Выдает ошибку bad command $cdmaterials .
Если Вам понравилась эта страница, Вы можете разместить где-нибудь ссылку на неё: